package com.cskaoyan.javase.array._3exception._4operation._0traverse;

import java.util.Arrays;

/**
 * 数组的遍历第三种方式,使用增强for循环
 * 增强for循环,也叫foreach或者迭代器
 * 是数组/容器的一种迭代遍历方式
 * 语法:
 *      for(容器中元素的数据类型 变量名 : 容器名){
 *          // 遍历的循环体
 *      }
 *      解释:
 *      变量名指的是容器中的某一个元素
 *      随着遍历的进行,可以遍历完毕容器中所有的元素
 *
 * 增强for的优点:
 *      1.语法简洁,遍历容器十分高效.
 *      2.配合快捷键"iter"可以快速生成一个容器的增强for,十分快捷
 *      3.直接遍历元素,而不像普通for那样遍历下标
 *
 * 缺点/特点:
 *      1.增强for是一种迭代器,它仅仅用于遍历和访问容器中的元素
 *          但是不能对容器中的元素做任何修改!
 *      2.勉强算一个缺点.
 *          普通for遍历数组时,循环控制变量i可以作为下标
 *          但是增强for没有下标
 *          所以在需要使用数组下标的场景中,使用增强for是不合适的
 *
 * 总结:
 *      增强for语法简洁,使用方便,在不做元素修改或者不需要使用数组下标的场景中,优先选择增强for遍历数组
 *      在需要修改元素取值,或者需要数组下标的场景中,只能用普通for遍历数组.
 *
 * @since 16:06
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo4 {
    public static void main(String[] args) {
        /*double[] arr = {0.1, 0.2, 3};
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        System.out.println("----------------");
        for (double element : arr){
            System.out.println(element);
        }

        // iter快捷键生成增强for语法
        for (double element : arr) {
            System.out.println(element);
        }
        System.out.println("--------------------");*/


        int[] arr = {1, 2, 3};
        for (int i = 0; i < arr.length; i++) {
            arr[i] = 666;
        }
        System.out.println(Arrays.toString(arr));

        for (int element : arr) {
            element = 777;
        }
        System.out.println(Arrays.toString(arr));

    }
}
